home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / dev / misc / gms_dev.lha / GMSDev / Source / Asm / Cards / DrawCard.s < prev    next >
Text File  |  1997-12-23  |  5KB  |  213 lines

  1. ;-------T-------T------------------------T----------------------------------;
  2. ;Draw CardSet
  3. ;------------
  4. ;Loads a card file and draws a card to screen.  Push right mouse
  5. ;button to cycle through the available cards in the file.
  6. ;
  7. ;This demo uses a single buffer only, so things won't look right if the
  8. ;card is restored.
  9.  
  10. MAX_IMAGES =    1    ;1 card being blitted.
  11.  
  12.     INCDIR    "GMSDev:Includes/"
  13.     INCLUDE    "dpkernel/dpkernel.i"
  14.     INCLUDE    "graphics/cards.i"
  15.     INCLUDE    "system/modules.i"
  16.  
  17.     SECTION    "Demo",CODE
  18.  
  19. ;===========================================================================;
  20. ;                             INITIALISE DEMO
  21. ;===========================================================================;
  22.  
  23.     STARTDPK
  24.  
  25. Start:    MOVEM.L    A0-A6/D1-D7,-(SP)
  26.     move.l    DPKBase(pc),a6
  27.     lea    PictureFile(pc),a0
  28.     moveq    #ID_PICTURE,d0
  29.     CALL    Load
  30.     move.l    d0,Picture
  31.     beq    .Exit
  32.  
  33.     moveq    #ID_SCREEN,d0
  34.     CALL    Get
  35.     move.l    d0,Screen
  36.     beq    .Exit
  37.  
  38.     move.l    Picture(pc),a0
  39.     move.l    Screen(pc),a1
  40.     move.l    PIC_Bitmap(a0),a2
  41.     move.l    BMP_Data(a2),GS_MemPtr1(a1)
  42.     CALL    CopyStructure
  43.  
  44.     move.l    Screen(pc),a0
  45.     sub.l    a1,a1
  46.     CALL    Init
  47.     tst.l    d0
  48.     beq.s    .Exit
  49.  
  50. ;---------------------------------------------------------------------------;
  51. ;Initialise the cards module and cardset.
  52.  
  53.     lea    CardModTags(pc),a0    ;a0 = Module tags.
  54.     sub.l    a1,a1    ;a1 = No container.
  55.     CALL    Init    ;>> = Initialise Cards Interface.
  56.     tst.l    d0    ;d0 = Check for error.
  57.     beq.s    .Exit    ;>> = Error, exit.
  58.     move.l    d0,a0    ;a0 = Card module.
  59.     move.l    MOD_ModBase(a0),CardBase    ;ma = Store jump table.
  60.  
  61.     lea    CardsTag(pc),a0    ;a0 = Taglist object.
  62.     move.l    Screen(pc),a1    ;a1 = Screen container.
  63.     CALL    Init    ;>> = Initialise the card set.
  64.     tst.l    d0    ;ma = Save CardSet
  65.     beq.s    .Exit    ;>> = Error, exit.
  66.  
  67. ;---------------------------------------------------------------------------;
  68. ;Initialise the restorelist.
  69.  
  70.     lea    RestoreTags(pc),a0
  71.     move.l    Screen(pc),a1    ;a1 = Screen.
  72.     CALL    Init    ;>> = Initialise the restore list.
  73.     tst.l    d0    ;d0 = Check for errors.
  74.     beq.s    .Exit    ;>> = Error, exit.
  75.  
  76. ;---------------------------------------------------------------------------;
  77.  
  78.     moveq    #ID_JOYDATA,d0    ;Get joydata structure for reading
  79.     CALL    Get    ;port 0.
  80.     move.l    d0,JoyData
  81.     beq.s    .Exit
  82.     move.l    d0,a0    ;Initialise the joydata structure.
  83.     sub.l    a1,a1
  84.     CALL    Init
  85.     tst.l    d0
  86.     beq.s    .Exit
  87.  
  88.     move.l    Screen(pc),a0
  89.     CALL    Display
  90.  
  91.     bsr.s    Main
  92.     
  93. ;---------------------------------------------------------------------------;
  94. ;                                 EXIT TO DOS
  95. ;---------------------------------------------------------------------------;
  96.  
  97. .Exit    move.l    DPKBase(pc),a6
  98.     move.l    JoyData(pc),a0
  99.     CALL    Free
  100.     move.l    Restore(pc),a0
  101.     CALL    Free
  102.     move.l    CardSet(pc),a0    ;a0 = Card set.
  103.     CALL    Free    ;>> = Free the card.
  104.     move.l    CardModule(pc),a0
  105.     CALL    Free
  106.     move.l    Screen(pc),a0
  107.     CALL    Free
  108.     move.l    Picture(pc),a0
  109.     CALL    Free
  110.     MOVEM.L    (SP)+,A0-A6/D1-D7
  111.     moveq    #ERR_OK,d0
  112.     rts
  113.  
  114. ;===========================================================================;
  115. ;                                  MAIN LOOP
  116. ;===========================================================================;
  117.  
  118. Main:
  119. .loop    move.l    DPKBase(pc),a6
  120.     move.l    Restore(pc),a0
  121.     CALL    Activate
  122.  
  123.     move.l    CardSet(pc),a0    ;a0 = Cardset.
  124.     CALL    Draw    ;>> = Draw the card.
  125.  
  126.     move.l    SCRBase(pc),a6
  127.     CALL    scrWaitAVBL
  128.  
  129.     move.l    DPKBase(pc),a6
  130.     move.l    JoyData(pc),a0
  131.     CALL    Query
  132.  
  133.     move.l    JoyData(pc),a0
  134.     move.l    CardSet(pc),a1
  135.     move.l    CS_Bob(a1),a1
  136.     move.w    JD_XChange(a0),d0
  137.     add.w    d0,BOB_XCoord(a1)
  138.     move.w    JD_YChange(a0),d0
  139.     add.w    d0,BOB_YCoord(a1)
  140.     move.l    JD_Buttons(a0),d0
  141.     btst    #JB_RMB,d0
  142.     beq.s    .ChkLMB
  143.  
  144.     moveq    #25,d3
  145.     move.l    SCRBase(pc),a6
  146. .lp    CALL    scrWaitAVBL
  147.     dbra    d3,.lp
  148.  
  149.     move.l    Cardset(pc),a1
  150.     addq.w    #1,CS_Card(a1)
  151.     move.w    CS_AmtCards(a1),d1
  152.     cmp.w    CS_Card(a1),d1
  153.     bgt.s    .ChkLMB
  154.     clr.w    CS_Card(a1)
  155.     
  156. .ChkLMB    move.l    JoyData(pc),a0
  157.     move.l    JD_Buttons(a0),d0
  158.     btst    #JB_LMB,d0
  159.     beq.s    .loop
  160.     rts
  161.  
  162. ;===========================================================================;
  163. ;                                  DATA
  164. ;===========================================================================;
  165.  
  166. CardBase:    dc.l  0
  167. Screen:        dc.l  0
  168. Picture:    dc.l  0
  169. JoyData:    dc.l  0
  170.  
  171. ;---------------------------------------------------------------------------;
  172.  
  173. CardModTags:    dc.l  TAGS_MODULE
  174. CardModule:    dc.l  0
  175.         dc.l  MODA_Name,CardsName
  176.         dc.l  MODA_Version,Cards_ModVersion
  177.         dc.l  MODA_Revision,Cards_ModRevision
  178.         dc.l  TAGEND
  179.  
  180. CardsName:    dc.b  "mod.cards",0
  181.         even
  182.  
  183. ;---------------------------------------------------------------------------;
  184.  
  185. RestoreTags:    dc.l  TAGS_RESTORE
  186. Restore:    dc.l  0
  187.         dc.l  RSA_Entries,1
  188.         dc.l  TAGEND
  189.  
  190. ;---------------------------------------------------------------------------;
  191.  
  192. CardsTag:    dc.l  TAGS_CARDSET
  193. CardSet:    dc.l  0
  194.         dc.l  CSA_Attrib,BBF_CLIP|BBF_GENMASK|BBF_FILLMASK
  195.         dc.l  CSA_Source,.file
  196.         dc.l  TAGEND
  197.  
  198. .file        FILENAME "GMS:Demos/data/Hires16.reko"
  199.  
  200. ;---------------------------------------------------------------------------;
  201.  
  202. PictureFile:    FILENAME "GMS:Demos/data/Background16.iff"
  203.  
  204. ;===========================================================================;
  205.  
  206. ProgName:    dc.b  "Draw Card",0
  207. ProgAuthor:    dc.b  "Paul Manias",0
  208. ProgDate:    dc.b  "15 December 1997",0
  209. ProgCopyright:    dc.b  "DreamWorld Productions (c) 1996-1997.  Freely distributable.",0
  210. ProgShort:    dc.b  "Simple card demonstration.",0
  211.         even
  212.  
  213.